#ifndef TASKWINDOW_H
#define TASKWINDOW_H

#include <QListWidget>
#include <QObject>
#include <QList>
#include <QMenu>
#include <QDrag>
#include <QCheckBox>
#include <QMimeData>
#include <QDropEvent>
#include <QMouseEvent>
#include <QThread>

#include "roi.h"
#include "taskitem.h"

class TaskWindow : public QListWidget
{
    Q_OBJECT
public:
    explicit TaskWindow(QWidget* parent = nullptr);

protected:
    void dragEnterEvent(QDragEnterEvent* event) override;
    void dragMoveEvent(QDragMoveEvent* event) override;
    void dropEvent(QDropEvent* event) override;

    void mousePressEvent(QMouseEvent* event) override;          // 记录任务索引
    void contextMenuEvent(QContextMenuEvent *event) override;   // 右键菜单

signals:
    void updateTaskItem(int index);
    void updatePicture(bool click, int Num);                    // Mainwindow更新图像

public slots:
    void updateTasks(int Num);

public:
    QList<TaskItem*> m_items;       // 任务对象列表
    TaskItem* m_tmpItem = nullptr;  // 复制的任务对象
    int m_dragIndex = 0;            // 用于跟踪拖动项的索引
    QPixmap m_pic;                  // 处理过最新的图片
    QPixmap m_tmpPic;               // 用于暂存每个任务刚点击要执行前的图像
    Mat m_mask;                     // 掩码矩阵
};

#endif // TASKWINDOW_H
